<?php
class DashboardsController extends AppController {
	var $components = array('Cookie','Idioma');
	var $name = 'Dashboards';
	var $uses = array('Person','PeopleProblem','PeopleProduct','Evolution','PeopleSign','Sign','PeoplePractice','Practice','Result','PeopleVademecum','InsurancesPerson','Insurance','Turn','Product','Agenda');

	
    function beforeFilter () {
        parent::beforeFilter();

		// Aplico el Layout segun la Vista o si es AJAX
		if ($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
		}else{
			// Cambio la Vista por la del Rol
			$this->layout = strtolower($this->Session->read('VistaActual'));
		}

		// Averiguo si hay notificaciones para mostrar
		$nombre_controlador = $this->name;
		$nombre_metodo = $this->action ;
//		$this->requestAction('/notifications/getNotifications/'.$nombre_controlador);


    }

	function index($fecha_inicio = null, $fecha_fin = 0, $agenda_id=0) {
		//pr($this->Session->read());
		$client_id      = $this->Session->read('ClientesUsuarioLogueado.id');
		$user_id        = $this->Auth->user('id');
		$profesional_id = $this->Session->read('ProfesionalSeleccionado');
 
		$rol_actual = strtolower($this->Session->read('VistaActual'));
		$administradores_de_agenda = array("asistente", "secretaria", "administrador");
		
		$agenda_pasada_por_parametro = $agenda_id;
		
		$mostrar_option_todas_las_agendas = '';
				
		if($agenda_id==0){
			//pr($this->Session->read());
			if( !in_array($rol_actual, $administradores_de_agenda) ) {
				$agenda_id  = $this->Session->read('AgendaSeleccionada');
			}else{
				//-------------------------------------------------------------
				//               No hay agenda seleccionada, y es administrador
				//-------------------------------------------------------------
				// $agenda_id_aux  = $this->Session->read('AgendaSeleccionada');
				// if($agenda_id_aux != 0){ $agenda_id  = $agenda_id_aux; }
				$mostrar_option_todas_las_agendas = "<option value='0' selected>Todos los turnos de hoy</option>";
				
			}

		} else {
			$this->Session->write('AgendaSeleccionada',$agenda_id);	
		
			if( in_array($rol_actual, $administradores_de_agenda) ) {
				$mostrar_option_todas_las_agendas = "<option value='0' >Todos los turnos de hoy</option>";
			}
		}

		$this->set('mostrar_option_todas_las_agendas',$mostrar_option_todas_las_agendas);
		
		
  		//-------------------------------------------------
		// Cuales son los Medicos de este Cliente ?
		$doctors = $this->requestAction('/users/obtenerListadoDoctores/'.$client_id);

		//-------------------------------------------------------------------
		// Cuales son las Agendas de este Cliente?
		$ag = $this->Agenda->find('all', array(
							'conditions' => array(
											'Agenda.client_id' => $client_id, 
											'Agenda.staterecord_id' => 1
											),
							'order' => array('Agenda.nombre' => 'ASC')
					) );
		$Agendas = array();			

		foreach($ag as $clave=>$valor){


			if(!empty($valor['AgendasSegment'])){
				//--------------------------------------------------------------
				//                               Que Agendas tengo que mostrar??
				//--------------------------------------------------------------
				if(in_array($rol_actual, $administradores_de_agenda) and  $valor['Agenda']['alcance']!='pri'){

					// Si es Admin, Secretaria o Asistente, las muestra loca y pub
					$Agendas[$valor['Agenda']['user_id']][$valor['Agenda']['id']]['nombre'] =  $valor['Agenda']['nombre'];
			 		$Agendas[$valor['Agenda']['user_id']][$valor['Agenda']['id']]['alcance'] =  $valor['Agenda']['alcance'];

				} elseif( $valor['Agenda']['user_id']==$user_id or  $valor['Agenda']['alcance']=='loc'){

					// Si es profesional, muestra las propias y las locales de otros
					$Agendas[$valor['Agenda']['user_id']][$valor['Agenda']['id']]['nombre'] =  $valor['Agenda']['nombre'];
					$Agendas[$valor['Agenda']['user_id']][$valor['Agenda']['id']]['alcance'] =  $valor['Agenda']['alcance'];
				}
			}
		}
//pr($Agendas);
		//---------------------------------------------------------------------
		// Ordena las Agendas por Medico
		//---------------------------------------------------------------------
		$Medicos = array();
		foreach($doctors as $medico_id=>$medico_nombre){
			if( isset($Agendas[$medico_id]) and !empty($Agendas[$medico_id]) ){
			
				foreach($Agendas[$medico_id] as $ag_id=>$nombre_agenda){
					$Medicos[$medico_id][$ag_id]['id']            = $medico_id;
					$Medicos[$medico_id][$ag_id]['nombre']        = $medico_nombre;
					$Medicos[$medico_id][$ag_id]['agenda_id']     = $ag_id;
					$Medicos[$medico_id][$ag_id]['nombre_agenda'] = $nombre_agenda['nombre'];
					$Medicos[$medico_id][$ag_id]['alcance']       = $nombre_agenda['alcance'];
					if($ag_id == $agenda_id){
						$profesional_id = $medico_id;
						$this->Session->write('ProfesionalSeleccionado',$profesional_id);
					}
				}
			
			}
		
		}

		$this->set('Medicos', $Medicos);
		$this->set('client_id', $client_id);
		$this->set('agenda_id', $agenda_id);
		$this->set('profesional_id', $profesional_id);

 
		$this->Idioma->_idioma();
		

		if(!$fecha_inicio){
			$fecha_inicio = date("Y-m-d");
			$fecha_inicio = date("Y-m-d",mktime(0,0,0,date("m"),date("d"),date("Y")));
		}

		if($fecha_fin>0){
			list($anio_fin,$mes_fin,$dia_fin) = explode('-',$fecha_fin);
			$fecha_fin = date("Y-m-d",mktime(23,59,59,$mes_fin,$dia_fin+1,$anio_fin));
		} else {
			list($anio_fin,$mes_fin,$dia_fin) = explode('-',$fecha_inicio);
			$fecha_fin = date("Y-m-d",mktime(23,59,59,$mes_fin,$dia_fin+1,$anio_fin));
		}

		
		switch($rol_actual){
			case 'asistente':
//				$this->redirect('/calendarios/semanal/'.date("Y").'/'.date("m").'/'.date("d"));

				$this->set('fecha_inicio',$fecha_inicio);
				$this->set('fecha_fin',$fecha_fin);
				
				$registro_gral = $this->requestAction("/turns/ObtenerTurnos/$fecha_inicio/$fecha_fin/0/$agenda_id" );
				//$registro_gral = $this->requestAction('/turns/ObtenerTurnos/'.$fecha_inicio.'/'.$fecha_fin) ;
				if($registro_gral){
					foreach($registro_gral as $clave=>$valor){
						if( $valor['Turn']['producto_id']>0 ){
							$product = $this->Product->read(null,$valor['Turn']['producto_id']);
							$nombre_producto = $product['Product']['name'];
							$registro_gral[$clave]['Turn']['nombre_producto'] = $nombre_producto;
						} else {
							$registro_gral[$clave]['Turn']['nombre_producto'] = '';
						}
						
						if($valor['Turn']['person_id']>0){
							//----------------------------------------------------
							// Se le asigno el valor de la consulta??
							//----------------------------------------------------
							$fecha     = substr($valor['Turn']['fecha'],0,10);
							$doctor_id = $valor['Turn']['doctor_id'];
							$person_id = $valor['Turn']['person_id'];
							$sql = "select id 
									from people_products
									where person_id='$person_id' and client_id='".$this->Session->read('ClientesUsuarioLogueado.id')."' and created like '$fecha%' and staterecord_id='1'
									order by id DESC LIMIT 1";
									
							$pago = $this->PeopleProduct->query($sql);
							if(count($pago)>0){
								$registro_gral[$clave]['Turn']['valor_consulta']=1;
							} else {
								$registro_gral[$clave]['Turn']['valor_consulta']=0;
							}
							
						} else {
							$registro_gral[$clave]['Turn']['valor_consulta']=0;
						}
					}
				}
				
				//pr($registro_gral);
				
				
				$this->set('registro_gral',$registro_gral );
				$this->set('doctores',$this->requestAction("/users/obtenerListadoDoctores/$client_id") );

				// Reenvio los datos a la Vista de la Secretaria
				$this->render('secretaria');

				break;

			case 'secretaria':

				$this->set('fecha_inicio',$fecha_inicio);
				$this->set('fecha_fin',$fecha_fin);
				$registro_gral = $this->requestAction("/turns/ObtenerTurnos/$fecha_inicio/$fecha_fin/0/$agenda_id" );
//				$registro_gral = $this->requestAction("/turns/ObtenerTurnos/$fecha_inicio/$fecha_fin") ;
				if($registro_gral){
					foreach($registro_gral as $clave=>$valor){
						if( $valor['Turn']['producto_id']>0 ){
							$product = $this->Product->read(null,$valor['Turn']['producto_id']);
							$nombre_producto = $product['Product']['name'];
							$registro_gral[$clave]['Turn']['nombre_producto'] = $nombre_producto;
						} else {
							$registro_gral[$clave]['Turn']['nombre_producto'] = '';
						}
						
						if($valor['Turn']['person_id']>0){
							//----------------------------------------------------
							// Se le asigno el valor de la consulta??
							//----------------------------------------------------
							$fecha     = substr($valor['Turn']['fecha'],0,10);
							$doctor_id = $valor['Turn']['doctor_id'];
							$person_id = $valor['Turn']['person_id'];
							$sql = "select id 
									from people_products
									where person_id='$person_id' and client_id='".$this->Session->read('ClientesUsuarioLogueado.id')."' and created like '$fecha%' and staterecord_id='1'
									order by id DESC LIMIT 1";
							$pago = $this->PeopleProduct->query($sql);
							if(count($pago)>0){
								$registro_gral[$clave]['Turn']['valor_consulta']=1;
							} else {
								$registro_gral[$clave]['Turn']['valor_consulta']=0;
							}
							
						} else {
							$registro_gral[$clave]['Turn']['valor_consulta']=0;
						}
					}
				}
				
				//pr($registro_gral);
				
				
				$this->set('registro_gral',$registro_gral );
				$this->set('doctores',$this->requestAction("/users/obtenerListadoDoctores/$client_id") );

				// Reenvio los datos a la Vista de la Secretaria
				$this->render('secretaria');

				break;
				
			case 'administrador':

				$this->set('fecha_inicio',$fecha_inicio);
				$this->set('fecha_fin',$fecha_fin);
				$registro_gral = $this->requestAction("/turns/ObtenerTurnos/$fecha_inicio/$fecha_fin/0/$agenda_id" );
//				$registro_gral = $this->requestAction("/turns/ObtenerTurnos/$fecha_inicio/$fecha_fin") ;
				if($registro_gral){
					foreach($registro_gral as $clave=>$valor){
						if( $valor['Turn']['producto_id']>0 ){
							$product = $this->Product->read(null,$valor['Turn']['producto_id']);
							$nombre_producto = $product['Product']['name'];
							$registro_gral[$clave]['Turn']['nombre_producto'] = $nombre_producto;
						} else {
							$registro_gral[$clave]['Turn']['nombre_producto'] = '';
						}
						
						if($valor['Turn']['person_id']>0){
							//----------------------------------------------------
							// Se le asigno el valor de la consulta??
							//----------------------------------------------------
							$fecha     = substr($valor['Turn']['fecha'],0,10);
							$doctor_id = $valor['Turn']['doctor_id'];
							$person_id = $valor['Turn']['person_id'];
							$sql = "select id 
									from people_products
									where person_id='$person_id' and client_id='".$this->Session->read('ClientesUsuarioLogueado.id')."' and created like '$fecha%' and staterecord_id='1'
									order by id DESC LIMIT 1";
							$pago = $this->PeopleProduct->query($sql);
							if(count($pago)>0){
								$registro_gral[$clave]['Turn']['valor_consulta']=1;
							} else {
								$registro_gral[$clave]['Turn']['valor_consulta']=0;
							}
							
						} else {
							$registro_gral[$clave]['Turn']['valor_consulta']=0;
						}
					}
				}
				
				//pr($registro_gral);
				
				
				$this->set('registro_gral',$registro_gral );
				$this->set('doctores',$this->requestAction("/users/obtenerListadoDoctores/$client_id") );

				// Reenvio los datos a la Vista de la Secretaria
				$this->render('secretaria');

				break;
			default: // Profesional

				$this->set('fecha_inicio',$fecha_inicio);
				$this->set('fecha_fin',$fecha_fin);

				$registro_gral = $this->requestAction("/turns/ObtenerTurnos/$fecha_inicio/$fecha_fin/$profesional_id/$agenda_id" );


				if($registro_gral){
					foreach($registro_gral as $clave=>$valor){
						if( $valor['Turn']['producto_id']>0 ){
							$product = $this->Product->read(null,$valor['Turn']['producto_id']);
							$nombre_producto = $product['Product']['name'];
							$registro_gral[$clave]['Turn']['nombre_producto'] = $nombre_producto;
						} else {
							$registro_gral[$clave]['Turn']['nombre_producto'] = '';
						}
						
						if($valor['Turn']['person_id']>0){
							//----------------------------------------------------
							// Se le asigno el valor de la consulta??
							//----------------------------------------------------
							$fecha     = substr($valor['Turn']['fecha'],0,10);
							$doctor_id = $valor['Turn']['doctor_id'];
							$person_id = $valor['Turn']['person_id'];
							$sql = "select id 
									from people_products
									where person_id='$person_id' and client_id='".$this->Session->read('ClientesUsuarioLogueado.id')."' and created like '$fecha%' and staterecord_id='1'
									order by id DESC LIMIT 1";
						
							$pago = $this->PeopleProduct->query($sql);
							if(count($pago)>0){
								$registro_gral[$clave]['Turn']['valor_consulta']=1;
							} else {
								$registro_gral[$clave]['Turn']['valor_consulta']=0;
							}
							
						} else {
							$registro_gral[$clave]['Turn']['valor_consulta']=0;
						}
						
						
					
					
					}
				}
				$this->set('registro_gral',$registro_gral );
				
				break;
		}
		//pr($registro_gral);

	}
}
?>